package bLeMenu;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Enumeration;
import java.util.Vector;
import java.util.regex.Pattern;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

import modele.FormeGeometrique;
import modele.Point;

import dessin.ModeleDessin;

import xdivers.Outils;
import xdivers.PopupNouveau;
import aLeSoftware.EnvironnementDessin;
import aLeSoftware.Fenetre;

/**
 * Cette classe implémente ActionListener et permet de traiter les actions effectuées sur le menu. Chaque clic dans le menu
 * est traité dans cette classe. La provenance du clic est identifé par getActionCommand();
 * 
 * @author Arnaud
 *
 */
public class ControleurMenu implements ActionListener {

	private Fenetre laFenetre;
	
	public ControleurMenu(Fenetre f){
		this.laFenetre = f;
		}
	
	@Override
	public void actionPerformed(ActionEvent ae) {
		
		String source = ae.getActionCommand();
		
		if (source  == "New...") {	
			PopupNouveau test = new PopupNouveau(this.laFenetre);
			test.setVisible(true);
		}
		
		if (source == "Open...") {
			JFileChooser popup = new JFileChooser();
            if ( popup.showOpenDialog(this.laFenetre) == JFileChooser.APPROVE_OPTION)
            {
            String path = popup.getSelectedFile().getPath();
            laFenetre.ouvrirDessin(path);	
			this.laFenetre.getLaBarreMenu().enableMenus();
            }
		}
		
		if (source == "Save As...") {
			String path = "";
			JFileChooser popup = new JFileChooser();
            if ( popup.showSaveDialog(this.laFenetre) == JFileChooser.APPROVE_OPTION)
            {
            path = popup.getSelectedFile().getPath();
            String separatorPath = File.separator;
            String name = path.split(Pattern.quote(separatorPath))[path.split(Pattern.quote(separatorPath )).length-1];

            this.laFenetre.getOnglets().setTitleAt(this.laFenetre.getOnglets().getSelectedIndex(), name);
            
			
			EnvironnementDessin envDessin = (EnvironnementDessin) this.laFenetre.getOnglets().getSelectedComponent();
			ModeleDessin mdessin = envDessin.getmGeneral().getModDessin();
			mdessin.stockFormeTampon();		
			mdessin.setPath(path);
			mdessin.serializer(path);
            }
		}
				
		if (source == "Close"){
			this.laFenetre.getOnglets().remove(this.laFenetre.getOnglets().getSelectedComponent());
			if (this.laFenetre.getOnglets().getTabCount() == 0) this.laFenetre.getLaBarreMenu().disableMenus();
		}
		
		
		if (source == "Exit") {System.exit(0);}
		
		if (source == "Clear")
		{
			EnvironnementDessin envDessin = (EnvironnementDessin) this.laFenetre.getOnglets().getSelectedComponent();
			ModeleDessin mdessin = envDessin.getmGeneral().getModDessin();
			mdessin.clear();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if(source == "Symetrie0" || source =="SymetrieX" 
				|| source=="SymetrieY" || source=="Clone0" 
				|| source =="CloneX" || source=="CloneY"
				|| source == "Delete" || source=="Reset"
				|| source == "Group" || source=="Ungroup")
		{
			
		
		EnvironnementDessin envDessin = (EnvironnementDessin) this.laFenetre.getOnglets().getSelectedComponent();
		ModeleDessin mdessin = envDessin.getmGeneral().getModDessin();
		
		if(mdessin.howMuchSelected() == 0)
		{
			JOptionPane.showMessageDialog(null, "Please do a Selection before using this option", "Information", JOptionPane.INFORMATION_MESSAGE);
		}
		else
		{

		if (source == "Symetrie0") {
			envDessin.getmGeneral().getModDessin().symetrie0OnSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if(source == "SymetrieX") {
			envDessin.getmGeneral().getModDessin().symetrieXOnSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if(source == "SymetrieY") {
			envDessin.getmGeneral().getModDessin().symetrieYOnSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if (source == "Clone0") {
			envDessin.getmGeneral().getModDessin().clone0OnSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if (source == "CloneY") {
			envDessin.getmGeneral().getModDessin().cloneYOnSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if (source == "CloneX") {
			envDessin.getmGeneral().getModDessin().cloneXOnSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if (source == "Delete") {
			envDessin.getmGeneral().getModDessin().deleteSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if (source == "Reset") {
			envDessin.getmGeneral().getModDessin().resetSelection();
			envDessin.getmGeneral().updateObservateur();
		}
		
		if (source == "Group") {
			envDessin.getmGeneral().getModDessin().groupSelection();
		}
		
		if (source == "Ungroup") {
			envDessin.getmGeneral().getModDessin().ungroupSelection();
		}
	}
}	
}
}